This disclosure relates to cache coherency.
Some so-called cache coherent systems, in which consistency is maintained or at least monitored across multiple potential copies of the same data, make use of cache coherency controllers. A cache coherency controller, or “point of coherence” or “home node” is responsible for overseeing accesses to memory addresses and may use a so-called snoop filter for checking whether a cached version of a memory address to be accessed is held by another cache in the cache coherent system.
In order to avoid making unnecessary snoop enquiries, a snoop filter may maintain a directory indicating which memory addresses are held by which caches in the system. Such a directory may be inclusive, in that it attempts to store all of that information for all of the caches. As an example, an associative structure may be provided for such a directory.
If an entry relating to a new cache access needs to be written into a region of the associative directory for which all of the ways are currently occupied, one entry needs to be deleted. In order to maintain the inclusive nature of the directory, this then involves the cache coherency controller instructing the relevant cache(s) to delete their correspondingly cached lines. This process may be referred to as a back invalidation. Back invalidations for correctly operating caches are generally undesirable as they can reduce the likelihood of cache hits, increasing the delay and power requirements for memory accesses.